<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 1、let只有在当前代码块中有效
        {
            let a = 1;
            var b = 2;
        }
        // console.log(a); // 无法访问
        console.log(b); // 正常输出

        // 2、let不能重复声明
        let name = "天真";
        // let name = "无邪";

        // 3、let只能先声明再使用
        console.log(value); // 可以，但是值为undefined
        var value = "test"
        // console.log(test1); // 不可以，报错
        let test1 = "test1"; 

        // 4、不会成为window的属性
        var a = 100;
        console.log(window.a);
        let b1 = 200;
        console.log(window.b1); // undefined

        // 5、循环中推荐使用
        for(let i=0;i<10;i++){
            console.log(i);
        }
        // console.log(i); // 已经跳出i的作用域,i不能被识别到

        // const和var的差异，下边这个例子不是太懂
        const team = ["gwc","zyh"];
        team.push("gwj"); // 不会改变，列表内容改变了，但列表地址没变
        // team=[]; // 会报错，地址发生了改变
        team.pop(); // 也不会报错
        console.log(team);

        // 模板字符串,使用反引号表示``
        let ulStr = `
            <ul>
                <li>JAVA${a}</li>
                <li>C++${b1}</li>
                <li>PYTHON</li>
            </ul>
        `;
        console.log(ulStr);

    </script>
</head>
<body>
    <ul>
        <li>JAVA</li>
        <li>C++</li>
        <li>PYTHON</li>
    </ul>
</body>
</html>